home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 033a / mxtms_10.zip / FOSSIL.C < prev    next >
C/C++ Source or Header  |  1991-05-27  |  4KB  |  171 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*    Fossil.c      :Fossil routines for MaxTime                            */
  4. /*                                                                          */
  5. /****************************************************************************/
  6.  
  7. #include "MaxTime.h"
  8. #include "globals.h"
  9. #include <Bios.h>
  10.  
  11.  
  12. /* Higher level fossil routines */
  13.  
  14. union REGS r;
  15. struct SREGS sr;
  16.  
  17. /* Initialize fossil */
  18. int FossilInit(void)
  19. {
  20.  
  21.   r.h.ah = 0x4;
  22.   r.x.dx = com_port;
  23.   r.x.bx = 0;
  24. /*  r.x.cx = FP_OFF(&break_flag);
  25.   sr.es = FP_SEG(&break_flag); */
  26.  
  27.   int86x(0x14,&r,&r,&sr);        /* Call Fossil */
  28.  
  29.   if (0x1954 != r.x.ax)
  30.     return FALSE;
  31.   else if (r.h.bl < 0x18 || r.h.bh < 5){
  32.     logit("Level 5 FOSSIL req'd",'!');
  33.     return FALSE;
  34.   }
  35.   else return TRUE;
  36. }
  37.  
  38. /* De-initialize fossil */
  39. void FossilDeInit(void)
  40. {
  41.   r.h.ah = 0x5;
  42.   r.x.dx = com_port;
  43.  
  44.   int86(0x14,&r,&r);        /* Call Fossil */
  45. }
  46.  
  47.  
  48. /* Purge Fossil buffer. If Mode is TRUE, purge input buffer, FALSE
  49.     purge outout buffer */
  50.  
  51. void FossPurgeBuff(int mode)
  52. {
  53.  
  54.    r.x.dx = com_port;
  55.  
  56.    if (mode) {        /* purge input buffer */
  57.       r.h.ah = 0x0a;
  58.       int86(0x14,&r,&r);        /* Call Fossil */
  59.    }
  60.    else {        /* Purge output buffer */
  61.       r.h.ah = 0x09;
  62.       int86(0x14,&r,&r);        /* Call Fossil */
  63.    }
  64.  
  65. /* Turn on break */
  66.  
  67.    FossBreak(10);
  68.  
  69.    delay_s(1);
  70. }
  71.  
  72. void FossFlow(byte mask)
  73. {
  74.    r.x.dx = com_port;
  75.    r.h.al = mask;
  76.    r.h.ah = 0x0f;
  77.    int86(0x14,&r,&r);        /* Call Fossil */
  78.  
  79. }
  80.  
  81. /* Toggle DTR, if mode = TRUE, raise DTR. If mode = FALSE lower DTR */
  82. void FossDtr(int mode)
  83. {
  84.    r.x.dx = com_port;
  85.    r.h.ah = 0x06;
  86.    r.h.al = (byte) mode;
  87.  
  88.    int86(0x14,&r,&r);        /* Call Fossil */
  89. }
  90.  
  91. unsigned FossMdmStatus(void)
  92. {
  93.    r.x.dx = com_port;
  94.    r.h.ah = 0x03;
  95.    int86(0x14,&r,&r);        /* Call Fossil */
  96.  
  97.    return(r.x.ax);
  98. }
  99.  
  100. /* Return a keystroke. Check local keyboard first, then fossil */
  101. unsigned FossGetCh(void)
  102. {
  103.  
  104.    if (_bios_keybrd(_KEYBRD_READY)) /* Local keyboard has priority */
  105.       return(_bios_keybrd(_KEYBRD_READ));
  106.  
  107.    if (IsLocal)     /* If Local return cause keyboard is not ready */
  108.       return(0xffff);
  109.  
  110.    r.x.dx = com_port;
  111.    r.h.ah = 0x0c;        /* Non destructive fossil read-ahead */
  112.    int86(0x14,&r,&r);        /* Call Fossil */
  113.    if (r.x.ax != 0xffff) {
  114.       r.x.dx = com_port;
  115.       r.h.ah = 0x02;        /* Read fossil char with wait */
  116.       int86(0x14,&r,&r);        /* Call Fossil */
  117.    }
  118.    return(r.x.ax);
  119. }
  120.  
  121. /* Transmit a character to fossil with wait */
  122.  
  123. void FossSendCh(byte chr)
  124. {
  125.    r.x.dx = com_port;
  126.    r.h.ah = 0x01;
  127.    r.h.al = chr;
  128.  
  129.    int86(0x14,&r,&r);        /* Call Fossil */
  130. }
  131.  
  132. /* Transmit a string to fossil with wait */
  133. void FossSendStr(char *strng)
  134. {
  135.    
  136.     _asm {
  137.       mov   dx,com_port
  138.       mov   si,strng
  139.  
  140.       strstart:
  141.  
  142.       lodsb
  143.       cmp   al,0
  144.       je    strret
  145.       mov   ah,1
  146.       int   14h
  147.       jmp   strstart
  148.  
  149.       strret:
  150.  
  151.    }
  152. }
  153.  
  154. void FossBreak(int tsecs)
  155. {
  156.    if (modem_flags & FLAG_break_clr) {
  157.       r.x.dx = com_port;
  158.       r.h.ah = 0x1a;
  159.       r.h.al = 1;        /* Send break */
  160.       int86(0x14,&r,&r);        /* Call Fossil */
  161.  
  162.       delay_ms(100 * tsecs);
  163.  
  164.       r.x.dx = com_port;
  165.       r.h.ah = 0x1a;
  166.       r.h.al = 0;        /* Stop break */
  167.       int86(0x14,&r,&r);        /* Call Fossil */
  168.    }
  169. }
  170.  
  171.